package work.pcdd.validator.controller;


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

/**
 * @Date 2020/9/26 16:04
 * describe: 记录常用的get传参方式
 */
@RestController
public class GetController {
    /**
     * 单参数
     * 请求：http://127.0.0.1:8080/test1?id=1
     * 返回：test1:1
     */
    @GetMapping("test1")
    public String test1(String id) {
        return "test1:" + id;
    }

    /**
     * 双参数，多参数继续拼接即可
     * 请求：http://127.0.0.1:8080/test2?id=1&age=2
     * 返回：test2:1,2
     */
    @GetMapping("test2")
    public String test2(String id, int age) {
        return "test2:" + id + "," + age;
    }

    /**
     * 三参数
     * 请求：http://127.0.0.1:8080/test3?id=1&age=2&name=zhangsan
     * 返回：test3:1,2,zhangsan
     */
    @GetMapping("test3")
    public String test3(String id, int age, String name) {
        return "test3:" + id + "," + age + "," + name;
    }

    /**
     * PathVariable注解使用
     * 该注解是把'http://127.0.0.1:8080/test21'后面的占位符的值拿到，并赋值给values
     * */

    /**
     * 单参数请求
     * 请求：http://127.0.0.1:8080/test21/1
     * 返回：test21:id=1
     */
    @GetMapping("test21/{id}")
    public String test21(@PathVariable("id") Integer v1) {
        return "test21:id=" + v1;
    }

    /**
     * 双参数请求
     * 请求：http://127.0.0.1:8080/test22/1/2
     * 返回：test22:id=1,age=2
     */
    @GetMapping("test22/{id}/{age}")
    public String test22(@PathVariable("id") String v1, @PathVariable("age") String v2) {
        return "test22:id=" + v1 + ",age=" + v2;
    }

    /**
     * 多参数请求
     * 请求：http://127.0.0.1:8080/test23/1/2/lisi
     * 返回：test23:id=1,age=2,name=lisi
     */
    @GetMapping("test23/{id}/{age}/{name}")
    public String test23(@PathVariable("id") Integer v1
            , @PathVariable("age") Integer v2
            , @PathVariable("name") String v3) {
        return "test23:id=" + v1 + ",age=" + v2 + ",name=" + v3;
    }

    /**
     * RequestParam注解的使用
     * 该注解是把'http://127.0.0.1:8080/test31?'后面的数据封装成map
     * */

    /**
     * 多参数简单类型的请求
     * 请求：http://127.0.0.1:8080/test31?id=1&age=2&name=zhangsan
     * 返回：test31:id=1,age=2,name=zhangsan
     */
    @GetMapping("test31")
    public String test31(@RequestParam Map<String, Object> params) {
        Object id = params.get("id");
        //先把对象转成String类型，在用Integer的方法转成int类型
        int age = Integer.parseInt((String) params.get("age"));
        String name = (String) params.get("name");
        return "test31:id=" + id.toString() + ",age=" + age + ",name=" + name;
    }

    /**
     * 多参数复杂类型的请求
     * 请使用Post
     * */

}



